Unite2016に行ってきたぽ
概要
今年は平和に過ごす。
Unite 2016
http://japan.unity3d.com/unite/unite2016/schedule
モバイル端末向けのUnityアプリケーションの最適化実践テクニック
profiling-with-instruments
http://blogs.unity3d.com/2016/02/01/profiling-with-instruments/
Reading the PlayerLoop
Updateとか
PlayerRender
OnWillRender
UI::CanvasManager;;WillRenderCanvases
Enlightenのメソッドもあるっぽい。
StartCoroutine使った場合、実行ブロックが2箇所に分割される
初回以降の後半はDelayedCallManager内で呼ばれる。
負荷をみるときに気をつけようねみたいな。
MemoryProfiler
見やすそう。MemoryProfiler
https://bitbucket.org/Unity-Technologies/memoryprofiler
DL -> Window -> Open MemoryProfiler Window -> start なんちゃら
メモリ、ヒープについて
GCは断続的に走ってる。
GC Alloc カラムで観れる。
anonymous methods & closuresを避ける
毎回初期化しなければいいのではっていう。
データパーシングについて
基本、textのパースに関わるものはすげー遅い。
3つの方針
1.don't parse text
bake text to bin ScriptableObject
ゲームデザインの値とか。
2.働きを小さく
チャンクに分ける
必要なとこだけパース
3.別スレッド
Pure C# types only.
Resourcesフォルダの中身は、起動時にインデックスを作っている
これは非同期にもできないし回避もできない。遅い。
Resources -> AssetBundle にすると、特にクソ遅い端末()とかでもスタートアップ時の恩恵があるっぽい。
Runtime
Propertyにセットするような値を毎フレームつくるのはやめよう。
static int とかでキャッシュ扱いにしておくと高速かつ軽量。
RegExp, StartsWith, EndsWith とかは漏れなく重い。特にReg。
::Box
String_
とかのキーワードでプロファイラで探すと見つけやすい。
Unityグラフィックス最新機能ガイド
Multithreaded Rendering
DowbleWide Rendering
2割くらい高速化できてる印象
Cinematic Image Effect
SSR
ScreenSpaceReflection
Progressive Light Mapper
GI
Unity CollaborateとUnity Cloud Buildを使って開発サイクルを高速化!
GUI上のボタンから一発でCloudに上がる。
メンバーはinviteで増やせる。
gitとかの置き換えというよりは、デザイナーさんとか、非エンジニアの人でも容易に同時編集作業ができるようなものを目指している印象。
質疑応答でもそういうはなしがめっちゃ多かった(gitとかとの互換性は?とか)
現状での作ってる人たちの理想形というかモチベーションは、
Collaborate = 「バージョン管理的な機構とは別軸」「ゲームジャムとかでの使用を念頭に置く」「別途バージョン管理をすることを念頭においていそう」という感じ。
ハードウェア性能を引き出して60fpsを実現するプログラミング・テクニック
ゲームロジックを別スレッドで実行
Vitaだと4コアあるんで、1コアを使おうみたいな。
MainThreadからデータを受け取るところとかが必要 ダブルバッファ自作
MainThreadからしか使えないAPIは!? 使わない!! なるほど!!
ダブルバッファ自作
ゲーム処理とrender処理のUpdateに分ける。
GPU
vartices直書きできる?らしい。5.4から公開されてるぽい
動的なメモリ確保をしない
struct使いまくる
パフォーマンスメータの話
vブランクの開始と終了に近い関数のコールバックを探す
PSVitaの場合、OnPreCull、OnPreCullで計測。
RenderThread, GPUは計測困難だった
今後に期待
GCのトリガになるのは?
Monoの場合は事前にAllocされてるメモリがnewでいっぱいになったら。
極限すぎるやつ
https://github.com/unity3d-jp/AnotherThread
Unity上級者を目指すなら知っておくべきデバッグテクニック集
ここでは
バグ = 思い通りに動かないこと
x 例外が出たらバグ、例外がでなければ仕様
どんどん問題の切り分けを行う
外部接続の確認 -> パラメータ -> プログラムの流れを確認する -> OSを差し替えてみる
問題を絞り込むまではログ、問題が絞り込めてからはデバッガ
映像制作のゲームチェンジャー:メイキング オブ ”THE GIFT”
いろいろてっく。Tweetひろってあとで拡充する。
ビルディング・2Dワールド in Unity ~2D機能のあれやこれや~
Tiled
タイルをならべるの、一個一個並べてると人生が終わる
タイル選択 -> インスペクタからDraw Mode -> Tiled にして、タイル自体の横幅を変更すると、サイズに対してテクスチャで埋めてくれるようになる。
2分が2秒に。
軸
オブジェクト内の軸のありようを変えられるようになってるぽい。
たとえば見下ろしし視点のゲーム作りたいときとかに使うといいのでは。
オリジナルタイル作成
アトラスを複数のタイルのコレクションから構築できるみたいな話かな。
アーティストもプログラマもウェルカム!新タイムラインエディタのご紹介
Sequencer
シーケンサ、アセットベースでいろいろセットしたり動かすことができるタイムラインツール。
Directorと呼ばれるAPIで操作。
ゲーム時間とかそのへんの、どの時間軸を使うのかは選べそう。
.playable拡張子でファイルとして保存される感じ。
コードからだと、Sequenceクラスのインスタンスという形で読み出したものをDirectorにセットして使う。
Cinemachine
カメラの画角とかを設定、ここで設定した内容をSequencer上にセットして、カメラの移動とかブレンディングみたいなのができるような感じ。
詳細はよくわからんかったがカメラのパンとかに関してもGUIベースで指定できそうで、ぐう有能そう。
サイトみつけた。これは、、めっちゃくちゃ期待できそうなカメラコントローラ、、!!
http://www.cinemachineimagery.com
スクラビングでスクリプトのプレビューができるのか
毎回ゼロ地点から計算すればあるいは。
APIからタイムラインを構築することは可能か
今はできないけどニーズによっては。
AssetBundle化
まだできない。今後?
個別に質問
・コンポーザブル?入れ子にできるか?
今後できる。ただし、見づらいから推奨はしない。
・事前定義必須?
必須。アイデンティファイはAssetIdとか、Hierarchyにものが載せてある前提な気がする。
・AIみたいに使うのは想定している?
特には想定してない。スクリプトくっつけることはできるから頑張れ。
・動的に参加するものを追加できるか?あるグループにキャラを追加、みたいな
想定してない。事前に足しておこうな!
・今はframe単位でロジック動かすのをやってるけど、「この方向に向かうのをこの時間内ずっと行う」みたいなのを考えたい。とのこと。
Coroutineみたいなアイデアだな~と聞きながら思っていた。自作ツールに近そう。
見えてきたSequencerのモチベーション(作ってる側が目指してるもの)
・イベントを発効できるAfterEffects
・シーン単位とかでの使用をメインに据えてそう
・ムービー、導入モーション、特定のカメラワークとかがメインな用途な気がする。
マルチシーン編集の使い方
Hierarchy上から右クリックメニューで、個別のシーン保存したりできるようになってた。
GetRootGameObjects
GetRootGameObjectsメソッドで、特定のシーンのHierarchyのルートになっている(=Hierに列挙されている)GameObjectを取得することができる。
gameObject.scene.buildIndex
gameObject.scene.buildIndex で、そのGameObjectがどのシーン由来なのか把握することができる。
便利~~
Unityとアセットツールで学ぶ「絵づくり」の基礎(ライト、シェーダー、イメージエフェクト)
絵作りの基礎について。Look Devの話。
どのくらいのリアル感を、出てくるものすべてに対して揃えるか
その法則を作りたい。
質感 = 色、陰影、タッチ
マテリアル、ライト、カメラ
マテリアル
マップ、シェーダ
ライト
直接光、関節光、ホワイトバランス、ソフトネス
カメラ
HDR、フォーカス、スクリーンスペースでのイメージエフェクト
ライティングにおけるモチベーション
どんなストーリーを持たせるのか(状況、何が起こるかの予告になっている感じ
作為的な感じで、特に対象を明るくするとか。
スライドをもとにコーネルボックスやってみよう。
カラーブリーディング
影に壁の色とかが入り込むこと
色はライト依存
diffuseがどんな色だろうと、ライトで全部変わる。
光の加法混色
各ライトの減衰特性
DirectionalLight
減衰しない。
PointLight
リニアに減衰する
AreaLight
急激(距離に対して逆二乗)で減衰する
GIの設定
Lighting Windowでやる。
GIまわりのところがメインで、他はサブっぽい。
エミッシブを使って云々するとライトみたいな感じになるが、実際にはライトではなくエフェクトっぽい。
BakeGIのほうがモバイルに向いてる感じ。昼夜を~みたいなのは、Precompiledなやつを使うことになりそう。
シェーダ
PBRValidateっていうツールがある。
イメージエフェクト
Scriptになってる。
資料の順番にいろいろ足すといい感じ。
Unityのロードマップと来場者の皆様によるオープンディスカッション
R&Dとか、今まさに作ってそうなもののはなし。あとメインの質問コーナー
(俺)WebSocketとかをサポートする予定はありますか
ない。
(俺)WebViewって各プラットフォームに公式機能としてどうですかね
ない。
C#の7とかそのいつ対応されそうなの?みたいな話
現在のコンパイラのバグ、プロファイラ、とかをみていって、まず6に対応すると思う。その後はその後。
Webプラグイン死んだんだけど、今後ってWebGL一本なの?どの程度いけんの?
割と動くようなフェーズ。
2つ新たにサポ
simd
sharedMemBuff
おまけ
公演直前に流れてるMade with Unityな作品群の中に、初めて見るやつとかまだリリース情報出てないやつとかが結構あった気がしてる。
かっこよかったのもいっぱいあったので、どんなのがあったのか、ちまちま集めてみようかと。
https://docs.google.com/spreadsheets/d/1I8UqjLLrtq_MvlfJLiY_z0-4M7KcXygjgAB60e5W6e4/edit#gid=0
よかったら情報ちょうだいです。